home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / c_toolbx.arc / EXPREAD.C < prev    next >
Encoding:
C/C++ Source or Header  |  1988-03-30  |  1.7 KB  |  79 lines

  1. /* expread - try reading a file */
  2. #include "stdio.h"
  3. #include "cminor.h"
  4.  
  5. long ftell() ;
  6. FILE *gfopen() ;
  7. FILE * fp ;     /* file pointer
  8.  
  9. /* modes for seek */
  10. #define BOF_SEEK 0
  11. #define REL_SEEK 1
  12. #define EOF_SEEK 2
  13.  
  14. main()
  15. {
  16.   int    n  ;            /* put fread return value here */
  17.   int    c  ;            /* put the char read here  */
  18.  
  19.   /* open the file */
  20.   fp = gfopen("test.dat","r",BIN_MODE)  ;
  21.   printf("\n gfopen returns - %d \n",fp) ;
  22.  
  23.   printf("\n position     char    char     position") ;
  24.   printf("\n  before      read    value     after\n") ;
  25.  
  26.   printf("\n                                       ") ;
  27.   printf("   start at beginning of file and read it") ;
  28.  
  29.   /* read the file one character at a time  */
  30.   /* stop when we get to the end of the file  */
  31.  
  32.   while( get_and_print() != EOF )
  33.   { ; }
  34.  
  35.   printf("\n");
  36.   printf("\n                                       ") ;
  37.   printf("   move to position %2 and read",5) ;
  38.   fseek(fp,5L,BOF_SEEK) ;
  39.   get_and_print() ;
  40.  
  41.  
  42.   printf("\n") ;
  43.   printf("\n                                       ") ;
  44.   printf("   move to position %2",5)  ;
  45.   fseek(fp,5L,BOF_SEEK) ;
  46.   printf("\n                                       ") ;
  47.   printf("   then move backward 1 char and read") ;
  48.   fseek(fp,-1L,REL_SEEK) ;
  49.   get_and_print() ;
  50.  
  51.   fclose(fp) ;
  52. }
  53.  
  54. int get_and_print()
  55. {
  56.   int    c  ;
  57.  
  58.   printf("\n    %21d ",ftell(fp)) ;
  59.   c  =    getc(fp) ;
  60.   printf("      ") ;
  61.   if( isgraphic(c) )
  62.   printf("    %c",c) ;
  63.   else if( c == '\n')
  64.      printf("   LF") ;
  65.   else if( c == '\r')
  66.      printf("   CR") ;
  67.   else if( c == EOF )
  68.      printf("  EOF") ;
  69.   else if( c == 26 )
  70.      printf("Ctl-Z") ;
  71.   else printf("     ") ;
  72.   printf("    %3d",c)  ;
  73.   printf("         %21d ",ftell(fp)) ;
  74.   return(c) ;
  75. }
  76.  
  77.  
  78.  
  79.